package chapter07;

/**
 * Created by Miracle yaochengwei on 2022/6/25 21:22
 */
public class HanoiTower {
    static class Tower {
        //方法
        //num 表示要移动的个数,a, b，c分别表示A塔，B塔，C塔

        public void move(int num,char a,char b,char c){//num盘数， a b c 柱子
         //如果只有一个盘 num =1；
            if (num ==1){
                System.out.println(a + "->" + c);
            }else{
                //如果有多个盘，可以看成两个。最下面和上面的所有盘
                //（1）先以动上面所有盘到b ，要借助 c   //  move(num -1,a,c,b);
                //最下面盘算一个   上面所有盘 算成 nun -1
                move(num -1,a,c,b);
                //(2)把最下面这个盘，移动到c
                System.out.println(a + "->" + c);
                //(3)再把b塔所有盘，以动到c 借助a
                move(num-1,b,a,c);
            }
        }
    }
    public static void main(String[] args) {
      Tower tower = new Tower();
      tower.move(5, 'A', 'B', 'C');
    }
}
